package bil.imagem;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Eduardo Folly
 */
public class ImagemModel extends AbstractTableModel {

    private ArrayList<Imagem> dataLista = new ArrayList();
    private String[] colunas = new String[]{"Id", "", "Cod Status", "Barra",
        "Status", "Nome", "Baixado", "Tamanho", "Endereço"};

    public ImagemModel() {
    }


    public ImagemModel(List<Imagem> clientes) {
        dataLista.addAll(clientes);
    }

    @Override
    public int getRowCount() {
        return dataLista.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
//        if (columnIndex == 1) {
//            return true;
//        } else {
            return false;
//        }
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Imagem imagem = dataLista.get(rowIndex);
        switch (columnIndex) {
            case 0:
                return imagem.getId();

            case 1:
                return imagem.isSelected();

            case 2:
                if (imagem.getStatus().length() > 1) {
                    return imagem.getStatus().substring(0, 1);
                } else {
                    return "";
                }

            case 3:
                Vector vec = new Vector(2);
                vec.add(imagem.getDownsun());

                if (imagem.getDownsize() == 0) {
                    vec.add(100);
                } else {
                    vec.add(imagem.getDownsize());
                }
                return vec;

            case 4:
                if (imagem.getStatus().length() > 4) {
                    return imagem.getStatus().substring(4);
                } else {
                    return "";
                }

            case 5:
                return imagem.getNome();

            case 6:
                return convert(imagem.getDownsun());

            case 7:
                return imagem.getTamanho();

            case 8:
                return imagem.getEndereco();

            default:
                return null;
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        if (columnIndex == 1) {
            Imagem imagem = dataLista.get(rowIndex);
            imagem.setSelected(new Boolean(aValue.toString()));
        }
    }

    @Override
    public String getColumnName(int col) {
        return colunas[col];
    }

    public void addObject(Object obj) {
        dataLista.add((Imagem) obj);
        this.fireTableDataChanged();
    }

    public Object getObjectAt(int row) {
        return dataLista.get(row);
    }

    private String convert(int inteiro) {
        long tam = inteiro;
        String sufixo = "b";
        if (tam > 1024) {
            sufixo = "Kb";
            tam = tam / 1024;
        } else {
            if (tam > 0) {
                tam += 1;
            }
        }

        return tam + sufixo;
    }

    public List<Imagem> getListImagens() {
        return dataLista;
    }
}
